home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 2000
/
MacHack 2000.toast
/
pc
/
The Hacks
/
Softshoe
/
Lisa's Mac Parts
/
AppleEvents
/
Records
/
ConstAEMember.cp
< prev
next >
Wrap
Text File
|
2000-06-23
|
2KB
|
106 lines
// ConstAEMember.cp
#ifndef ConstAEMember_h
#include "ConstAEMember.h"
#endif
#ifndef OSError_h
#include "OSError.h"
#endif
#ifndef Buffer_h
#include "Buffer.h"
#endif
#ifndef AEStruct_h
#include "AEStruct.h"
#endif
#include <Errors.h>
bool ConstAEMember::Exists() const
{
Assert( !Record().IsNull() );
DescType type;
int32 size;
OSErr error = AESizeOfKeyDesc( &record, key.Key(), &type, &size );
if ( error != noErr && error != errAEDescNotFound )
throw OSError( error );
return error == noErr;
}
uint32 ConstAEMember::Length() const
{
Assert( !Record().IsNull() );
DescType type;
int32 size;
ThrowOSError( AESizeOfKeyDesc( &record, key.Key(), &type, &size ) );
Assert( size >= 0 );
return size;
}
AEType ConstAEMember::Type() const
{
Assert( !Record().IsNull() );
DescType type;
int32 size;
ThrowOSError( AESizeOfKeyDesc( &record, key.Key(), &type, &size ) );
return AEType( type );
}
void ConstAEMember::operator>>( Data out ) const
{
Assert( !Record().IsNull() );
DescType type;
int32 size;
ThrowOSError( AEGetKeyPtr( &record,
key.Key(),
typeWildCard,
&type,
out.Start(),
out.Length(),
&size ) );
}
void ConstAEMember::operator>>( Buffer& out ) const
{
Assert( !Record().IsNull() );
DescType type;
int32 size;
ThrowOSError( AEGetKeyPtr( &record,
key.Key(),
typeWildCard,
&type,
out.Unused().Start(),
out.Unused().Length(),
&size ) );
Assert( size >= 0 );
out.AdvanceMark( size );
}
void ConstAEMember::Get( AEType desiredType, Data out ) const
{
Assert( !Record().IsNull() );
DescType actualType;
int32 actualSize;
ThrowOSError( AEGetKeyPtr( &record,
key.Key(),
desiredType.Type(),
&actualType,
out.Start(),
out.Length(),
&actualSize ) );
Assert( actualType == desiredType.Type() );
Assert( actualSize == out.Length() );
}
AEDescriptor::AEDescriptor( const ConstAEMember& member, AEType desired )
{
Assert( !member.Record().IsNull() );
ThrowOSError( AEGetKeyDesc( &member.Record(),
member.Key().Key(),
desired.Type(),
this ) );
}